package com.example.demo;

import lombok.Getter;  // 自动生成 getter 方法
import lombok.Setter;  // 自动生成 setter 方法

@Getter  // 自动生成所有字段的 getter 方法
@Setter  // 自动生成所有字段的 setter 方法
public class ApiResponse<T> {  // 泛型类，用于封装 API 响应
    private String status;      // 请求状态：success 或 error
    private String message;     // 响应消息
    private T data;             // 成功时返回的数据
    private String errorCode;   // 错误码，失败时返回
    private long timestamp;     // 响应时间戳

    // 构造函数：初始化状态、消息、数据、错误码和时间戳
    public ApiResponse(String status, String message, T data, String errorCode) {
        this.status = status;              // 状态
        this.message = message;            // 消息
        this.data = data;                  // 数据
        this.errorCode = errorCode;        // 错误码
        this.timestamp = System.currentTimeMillis();  // 时间戳
    }

    // 静态方法：成功响应
    public static <T> ApiResponse<T> success(String message, T data) {
        return new ApiResponse<>("success", message, data, null);  // 返回成功响应
    }

    // 静态方法：失败响应
    public static <T> ApiResponse<T> error(String message, String errorCode) {
        return new ApiResponse<>("error", message, null, errorCode);  // 返回失败响应
    }
}
